ofsp2026 06_tensor

Created time
Mar 28, 2026 05:17 AM
type
Post
status
Published
date
Mar 28, 2026
slug
ofsp2026 06_tensor
summary
tags
ofsp2026
OpenFOAM
category
post
icon
password
Place
Last edited time
Mar 28, 2026 09:12 AM
📌
Important
访问 https://aerosand.cc 以获取最近更新。

0. 前言

上一篇基于 Vector 类讨论了一些代码细节,本文讨论 Tensor 类。
本文主要讨论
讨论 Tensor 类的部分代码实现
理解多类复杂库的编译和链接
编译运行 tensor 项目

1. Tensor 类

终端输入命令,本地查找
终端输入命令,打开该类的文件夹
该类的文件结构如下
查看 Tensor/Tensor.H,可以看到该类的实现细节。这里不再逐条阅读。
我们还可以通过 API 或者终端查找阅读相关的类
  • dimensionedTensor
  • tensorField
📌
Warning
暂不深究代码细节,大概了解成员函数的用法即可。

2. OFextension 插件

十分推荐在 vscode 中安装社区插件 OFextension

2.1. 配置插件

  1. 点击 vscode 左下角小齿轮,打开 settings
  1. 搜索栏搜索 ofextension
  1. Ofextension: OFpath 中设置正确的 OpenFOAM 路径
  1. 使用 vscode 打开用户的开发应用,使用 F1 输入 ofInit 初始化配置

2.2. 插件使用

在项目开发中,例如本文应用,在主源码中输入相关对象,vscode 会自动弹出可选的方法(成员函数)。
而且可以在主源码中选中头文件、类等,右键使用 Go to DefinitionGo to Declaration 等,直接跳转查看源代码。
非常推荐此插件,十分方便。注意避免在 OpenFOAM 源文件夹下初始化。
Warning
注意有时候跳转的源代码并不是正确指向,要注意分辨。

3. 项目构建

终端输入命令,建立本文项目
继续使用终端命令或者使用 vscode 界面创建其他文件,最终文件结构如下
注意,开发库的文件结构与前文稍有不同。我们在前文已经可以注意到 OpenFOAM 库下一般有多个子库/类。用户的开发库里同样可能也会由好几个类构成,开发库拥有自己的 Make 文件,用于管理多个类,比如这里 Aerosand 库有 class1 , class2class3 三个类。

4. 开发库

4.1. class1

对于第一个类,我们依然使用之前的代码。
代码 class1.H
代码 class1.C

4.2. class2

对于第二个类,我们尝试通过继承来创建一个新类。
代码 class2.H
代码 class2.C
📌
Tip
注意声明和定义中使用的 scalar 和 vector 都属于 Foam 命名空间,所以需要使用该命名空间。

4.3. class3

对于第三个类,我们写一些简单的内容。
代码 class3.H
代码 class3.C

4.4. 库 Make

Make/files
本开发库没有其他依赖,库 Make/options 置空即可。

4.5. 库编译

终端输入命令,进行库的编译

5. 主项目

5.1. 主源码

代码 ofsp_06_tensor.C

5.2. 项目 Make

项目 Make/files
项目 Make/options
同样的,$FOAM_SRC/OpenFOAM 库已经自动依赖,其中类的使用均无需用户再次链接。

6. 编译运行

终端输入命令,编译运行该项目
运行结果如下

7. 小结

本文完成讨论
讨论 Tensor 类的部分代码实现
理解多类复杂库的编译和链接
编译运行 tensor 项目
 

支持我们

📌
Tip
希望这里的分享可以对坚持、热爱又勇敢的您有所帮助。
如果这里的分享对您有帮助,您的评论或赞助将对本系列以及后续其他系列的更新、勘误、迭代和完善都有很大的意义,这些行动也会为后来的新同学的学习有很大的助益。
赞助打赏时的信息和留言将用于展示和感谢。
Alipay
Alipay
 
Copyright @ 2026 Aerosand
  • OpenFOAM 开发代码 :GPL v3
 
 
Loading...